#pragma once

#include "tinyxml.h"
#include "Types.h"

class View
{
private:

public:

	View(float _near, float _far) : near(_near), far(_far) {}
	virtual ~View(void)	{}

	// Atributes
	string id;
	float near, far;

	// Methods
	virtual void setView(void) =0;

	// Handle methods to use in scene
	// No need to worry with pointer to timxml, since we won't modify the element
	static bool handleNFA(TiXmlElement *element, float &near, float &far, float &angle);
	static bool handleNFF(TiXmlElement *element,float &near, float &far, float &left, 
											float &right, float &top, float &bottom);
	static bool handleVector(TiXmlElement *element, float &x, float &y, float &z);

	// Views' Management
	static string default; // Default View id. First loaded view.
};